# !/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
===========================
@Time : 2022/8/20 0020 12:36
@Author : 测试开发工程师
@File : 5. 处理响应信息.py
@Software: PyCharm
============================
"""
from flask import Flask, render_template, make_response
from flask import jsonify

app = Flask(__name__)

"""
处理响应信息
    文本型
    元组
    Json
    html
    额外数据： cookie header

"""


# 常见响应类型 - 返回文本
@app.route('/text')
def get_text():
    return '文本信息'


# 常见响应类型 - 返回元组
# 返回元组
# response.stauts
# response.headers
# response.stauts,headers
# 响应状态码默认为200
@app.route('/tuple')
def tuple_rea():
    return '你好呀', 200, {"hogwarts": "ad", "test": "demo"}


# ========================================  返回json 格式  =====================================================
# 直接返回 dict 会转换为 json
# 使用 jsonify() 方法，通过参数传入键值对

# 返回 json
@app.route('/json')
def get_json():
    jsonify({'stauts': 0})
    return jsonify(status=1, name='ad', age=20)


# 返回字典
@app.route('/dict')
def get_dict():
    return {'stauts': 0}


# 常见响应类型 - 返回 html
# 使用模板渲染技术
# html 文件必须在同级的 templates 下
@app.route('/html')
def get_html():
    # 调用 render_template方法，传入 html 文件的名称
    # 注意 html 文件必须在 templates 目录下
    return render_template('demo.html')


# 设置额外数据 - make_response()
# 添加更多的响应信息
#     设置 cookies
#     设置 响应头信息
@app.route('/')
def index():
    resp = make_response(render_template('demo.html'))
    # 设置 cookie
    resp.set_cookie('username', 'the username')
    # 设置 响应头信息
    resp.headers['hogwarts'] = 'ad2'
    return resp


if __name__ == '__main__':
    app.run()
